package com.sunducation.wts.penbox.presenter;

import android.content.Context;

import com.sunducation.wts.penbox.contract.WorkRecordContract;
import com.wetao.lib_common.bean.response.ExamListInfo;
import com.wetao.lib_common.net.RetryWithDelay;
import com.wetao.lib_common.net.RxUtils;
import com.wetao.lib_common.net.ServerUtils;
import com.wetao.lib_common.net.callback.RequestCallback;
import com.wetao.lib_common.net.callback.RxErrorHandler;
import com.wetao.lib_common.utils.JsonUtils;

import java.util.HashMap;

import okhttp3.RequestBody;

/**
 * author: zhouyh
 * created on: 3/10/21 11:16 AM
 * description:
 */
public class WorkRecordPresenter extends WorkRecordContract.presenter {

    private Context mContext;

    public WorkRecordPresenter(Context mContext) {
        this.mContext = mContext;
    }

    @Override
    public void getExamList(HashMap<String, String> map,boolean isDialog, boolean cancelable) {

//         1. 测试数据 通过creat（）创建被观察者对象
//        Observable.create(new ObservableOnSubscribe<String>() {
//            // 2. 在复写的subscribe（）里定义需要发送的事件
//            @Override
//            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
//                File file = new File("/mnt/sdcard/Android/data/com.sunducation.wts.penbox/records");
//                String json = "";
//                if (file.exists()) {
//                    json = ComUtil.readFileFromSDCard(file);
//                }
//                emitter.onNext(json);
//                emitter.onComplete();
//            }  // 至此，一个被观察者对象（Observable）就创建完毕
//        }).subscribe(new Observer<String>() {
//            // 以下步骤仅为展示一个完整demo，可以忽略
//            // 3. 通过通过订阅（subscribe）连接观察者和被观察者
//            // 4. 创建观察者 & 定义响应事件的行为
//            @Override
//            public void onSubscribe(Disposable d) {
//            }
//            // 默认最先调用复写的 onSubscribe（）
//            @Override
//            public void onNext(String value) {
//                if(TextUtils.isEmpty(value)){
//                    ToastUtil.initToast("数据异常，请知悉！");
//                }else {
//                    ExamListInfo list = (JsonUtils.getmGson()).fromJson(value, ExamListInfo.class);
//                    getView().getExamListResult(list);
//                }
//            }
//            @Override
//            public void onError(Throwable e) {
//            }
//            @Override
//            public void onComplete() {
//            }
//        });

        String json =(JsonUtils.getmGson()).toJson(map);
        RequestBody requestBody =  RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),json);
        ServerUtils.getCommonApi().getExamList(requestBody)
                .retryWhen(new RetryWithDelay(3,2))
                .compose(RxUtils.<ExamListInfo>bindToLifecycle(getView()))
                .compose(RxUtils.<ExamListInfo>getSchedulerTransformer())
                .subscribe(new RequestCallback<ExamListInfo>(mContext, RxErrorHandler.getInstance(),isDialog,cancelable) {
                    @Override
                    public void onNext(ExamListInfo baseResponse) {
                        super.onNext(baseResponse);
                        if(baseResponse.getCode() == 0){
                            getView().getExamListResult(baseResponse);
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        super.onError(e);
                        getView().getExamListFail();
                    }
                });

    }
}
